📓 agora install.md by @flancian ☆

Agora Install

Before you get started

As of the time of writing the [[Agora]] consists of three distinct repositories:

The following instructions assume you clone all repositories and run all services under the same user in a Unix-like system (anagora.org runs on Debian GNU/Linux). We suggest agora:

$ adduser agora  # follow prompts
$ sudo su - agora

To get all repositories:

$ git clone https://github.com/flancian/agora.git
$ git clone https://github.com/flancian/agora-server.git
$ git clone https://github.com/flancian/agora-bridge.git

You need to clone all three to run a fully functioning Agora. Because the first is configuration only, and the third encapsulates all mutating code, you technically only need to run [[agora server]] as a service to run an immutable Agora. These instructions assume you set up all three in order.

Agora

You need to edit gardens.yaml if you want to carry a different set of sources. The Agora comes with defaults.

If you edit the [[CONTRACT]], your Agora might become incompatible with the Agora you forked from. Conflict resolution is part of [[agora protocol]] but currently not specified.

[[Agora Server]]

If you installed in non-standard paths (i.e. your repos are not in /home/<user>/<repo>), edit app/config.py.

You need to create a Python virtual environment, install packages from requirements.txt. run ./setup.sh and it’ll at least try to point you in the right direction :)

You can then ./run-dev.sh (for development) or ./run-prod.sh (if you want to serve to the outside world). If you do the latter, you may want to set up [[uwsgi]] in [[nginx]] and make it stick as a [[systemd service]] using agora-server.service as an example. Please refer to https://github.com/flancian/agora-server#to-develop for details.

You can add an nginx virtual host with [[certbot]]: certbot --nginx -d example.anagora.org. Then use the following as an example to forward traffic in that virtual host to Agora Server over UWSGI:

   location / {
        include uwsgi_params;
        # /home/agora/agora-server/run-prod.sh to run.
        uwsgi_pass unix:/tmp/agora-uwsgi.sock;
    }   

Agora Bridge

Then run ./run-prod.sh either on a shell or as a [[systemd service]]. This will pull from all sources in the root repository’s gardens.yaml in a loop.

You can also optionally run a number of bots that will interact with people in supported platforms. See the bots directory and https://github.com/flancian/agora-bridge#install for more.

And now?

Now that you have a functioning Agora, consider what you will do with it.

Please consider [[agora protocol]], [[contract]] and [[goals]]. Reach out if you are interested in establishing other protocols for [[collaboration]].

A note on Docker support

There is currently no [[docker]] support, but it seems like it could be a great fit. We have this in our plan, but if you’re handy with Docker, this would be a great contribution for you! :)